package com.lj.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lj.common.core.ajax.Result;
import com.lj.common.core.model.system.SysUser;

/**
 * <p>
 * 用户信息表 服务类
 * </p>、
 *
 * @author 小李飞刀
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 根据用名查询用户信息
     *
     * @param username 用户名
     * @return 结果
     */
    SysUser selectUserByUserName(String username);

    /**
     * 校验数据权限
     *
     * @param userId 用户ID
     */
    void checkUserDataScope(Long userId);

    /**
     * 校验用户名是否唯一
     *
     * @param userName 用户名
     * @return 结果
     */
    boolean checkUserNameUnique(String userName);

    /**
     * 校验用户手机号是否唯一
     *
     * @param user 用户信息
     * @return 结果
     */
    boolean checkPhoneUnique(SysUser user);

    /**
     * 校验用户邮箱是否唯一
     *
     * @param user 用户信息
     * @return 结果
     */
    boolean checkEmailUnique(SysUser user);

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 结果
     */
    Result addUser(SysUser user);

    /**
     * 更新用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    Result updateUser(SysUser user);

    /**
     * 判断是否可以操作
     *
     * @param user 用户信息
     */
    void checkUserAllowed(SysUser user);

    /**
     * 重置密码
     *
     * @param user 用户信息
     * @return 结果
     */
    boolean resetPwd(SysUser user);

    /**
     * 修改状态
     *
     * @param user 用户信息
     * @return 结果
     */
    boolean updateUserStatus(SysUser user);
}
